package com.ruicar.afs.cloud.common.modules.dto.mq.loan.contractdto;

import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.ruicar.afs.cloud.common.core.enums.AfsEnumDeserializer;
import com.ruicar.afs.cloud.common.core.enums.AfsEnumSerializer;
import com.ruicar.afs.cloud.common.modules.afscorebusiness.enums.CarFunctionEnum;
import com.ruicar.afs.cloud.common.modules.afscorebusiness.enums.WhetherEnum;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.Date;

/**
 * @param
 * @author yk.Li
 * @description 车辆申请
 * @date 2020/7/8
 */
@Data
public class ContractCarDetailsDTO {
    /**
     * car表主键
     */
    @JSONField(name = "id")
    private Long id;
    /**
     * 合同号
     */
    @JSONField(name = "contractNo")
    private String contractNo;
    /**
     * 抵押合同号码
     */
    @JSONField(name = "mortContractNo")
    private String mortContractNo;
    /**
     * 车架号
     */
    @JSONField(name = "carVin")
    private String carVin;
    /**
     * 车辆制造商
     */
    @JSONField(name = "carManufacturer")
    private String carManufacturer;
    /**
     * 品牌编号
     */
    @JSONField(name = "brandCode")
    private String brandCode;
    /**
     * 品牌名称
     */
    @JSONField(name = "brandName")
    private String brandName;
    /**
     * 车型编号
     */
    @JSONField(name = "modelCode")
    private String modelCode;
    /**
     * 车型名称
     */
    @JSONField(name = "modelName")
    private String modelName;
    /**
     * 款式编号
     */
    @JSONField(name = "styleCode")
    private String styleCode;
    /**
     * 款式名称
     */
    @JSONField(name = "styleName")
    private String styleName;
    /**
     * 指导价
     */
    @JSONField(name = "guidePrice")
    private BigDecimal guidePrice;
    /**
     * 销售价
     */
    @JSONField(name = "salePrice")
    private BigDecimal salePrice;
    /**
     * 车身级别
     */
    @JSONField(name = "carBodyClass")
    private String carBodyClass;
    /**
     * 燃料类型
     */
    @JSONField(name = "fuelType")
    private String fuelType;
    /**
     * 发动机号
     */
    @JSONField(name = "engineNo")
    private String engineNo;
    /**
     * 车辆颜色
     */
    @JSONField(name = "carColor")
    private String carColor;
    /**
     * 排量 T/L
     */
    @JSONField(name = "carDisplacement")
    private String carDisplacement;
    /**
     * 变速器
     */
    @JSONField(name = "carTransmission")
    private String carTransmission;
    /**
     * 使用性质 运营、非运营
     */
    @JSONField(name = "carFunction", serializeUsing = AfsEnumSerializer.class, deserializeUsing = AfsEnumDeserializer.class)
    private CarFunctionEnum carFunction;
    /**
     * 上牌地点-省份
     */
    @JSONField(name = "licenseProvince")
    private String licenseProvince;
    /**
     * 上牌地点-城市
     */
    @JSONField(name = "licenseCity")
    private String licenseCity;
    /**
     * 购车地点-省份
     */
    @JSONField(name = "purchaseProvince")
    private String purchaseProvince;
    /**
     * 购车地点-城市
     */
    @JSONField(name = "purchaseCity")
    private String purchaseCity;
    /**
     * 核定载客
     */
    @JSONField(name = "totalPassenger")
    private String totalPassenger;
    /**
     * 表显里程
     */
    @JSONField(name = "mileage")
    private BigDecimal mileage;
    /**
     * 二手车销售价
     */
    @JSONField(name = "secondSalePrice")
    private BigDecimal secondSalePrice;
    /**
     * 所有人
     */
    @JSONField(name = "carBelongs")
    private String carBelongs;
    /**
     * 所有人证件号
     */
    @JSONField(name = "belongsCertNo")
    private String belongsCertNo;
    /**
     * 所有人住址
     */
    @JSONField(name = "belongsAddress")
    private String belongsAddress;
    /**
     * 车牌号码
     */
    @JSONField(name = "licensePlate")
    private String licensePlate;
    /**
     * 评估师
     */
    @JSONField(name = "carAppraiser")
    private String carAppraiser;
    /**
     * 评估价格
     */
    @JSONField(name = "evaluatingPrice")
    private BigDecimal evaluatingPrice;
    /**
     * 车辆出厂日期
     */
    @JSONField(name = "vehicleMadeDate")
    private Date vehicleMadeDate;
    /**
     * 首次登记日期
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JSONField(name = "firstLandingDate")
    private Date firstLandingDate;
    /**
     * 首次上牌地址
     */
    @JSONField(name = "firstLicenseAddress")
    private String firstLicenseAddress;
    /**
     * 挂靠单位ID
     */
    @JSONField(name = "affiliatedId")
    @JsonSerialize(using = ToStringSerializer.class)
    private String affCompanyId;
    /**
     * 车商ID
     */
    @JSONField(name = "dealerId")
    @JsonSerialize(using = ToStringSerializer.class)
    private String carDealerId;
    /**
     * 车商姓名
     */
    @JSONField(name = "dealerName")
    private String dealerName;
    /**
     * 车商联系电话
     */
    @JSONField(name = "dealerPhone")
    private String carDealerPhone;
    /**
     * 车商联系地址-省份
     */
    @JSONField(name = "dealerProvince")
    private String carDealerProvince;
    /**
     * 车商联系地址-城市
     */
    @JSONField(name = "dealerCity")
    private String carDealerCity;
    /**
     * 车商联系地址-区县
     */
    @JSONField(name = "dealerCounty")
    private String carDealerCounty;
    /**
     * 车商联系地址-街道
     */
    @JSONField(name = "dealerStreet")
    private String carDealerStreet;
    /**
     * 车商联系地址-详细
     */
    @JSONField(name = "dealerAddress")
    private String carDealerAddress;
    /**
     * 注册地点-省份
     */
    @JSONField(name = "registProvince")
    private String registProvince;
    /**
     * 注册地点-城市
     */
    @JSONField(name = "registCity")
    private String registCity;
    /**
     * 一年内过户次数
     */
    @JSONField(name = "yearTransNum")
    private Integer yearTransNum;
    /**
     * 总过户次数
     */
    @JSONField(name = "transNums")
    private Integer transNums;
    /**
     * 是否循环过户
     */
    @JSONField(name = "isCirTrans", serializeUsing = AfsEnumSerializer.class, deserializeUsing = AfsEnumDeserializer.class)
    private WhetherEnum isCirTrans;
    /**
     * 是否抵押
     */
    @JSONField(name = "isMortgage", serializeUsing = AfsEnumSerializer.class, deserializeUsing = AfsEnumDeserializer.class)
    private WhetherEnum isMortgage;
    /**
     * 整车型号/车辆型号
     */
    @JSONField(name = "fullModelNum")
    private String fullModelNum;
    /**
     * 主挂类别 主车、挂车、整车
     */
    @JSONField(name = "mainAffType")
    private String mainAffType;
    /**
     * 车辆种类 牵引车、载货车、专业车、工程类车、其他
     */
    @JSONField(name = "carKind")
    private String carKind;
    /**
     * 车辆用途
     */
    @JSONField(name = "carUse")
    private String carUse;
    /**
     * 车辆抵押时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JSONField(name = "carMortDate")
    private Date carMortDate;
    /**
     * 车辆解除抵押时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JSONField(name = "releaseMortDate")
    private Date releaseMortDate;
    /**
     * 车辆结清时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JSONField(name = "carSettleDate")
    private Date carSettleDate;
}
